/**
 * 用户名
 * @param rule 验证规则（不含特殊字符）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validateUsername(rule, value, callback) {
  // var reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]{1,16}$/;
  const reg = /^[a-zA-Z0-9]{1,16}$/
  if (value.length > 16) {
    callback(new Error('长度不能超过16个字符'))
  }
  else if (!reg.test(value)) {
    // callback(new Error('仅支持大小写英文、中文和下划线_'));
    callback(new Error('仅支持大小写英文和数字'))
  }
  else {
    callback()
  }
}

/**
 * 密码格式验证
 * @param rule 验证规则（不少于6位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validatePassword(rule, value, callback) {
  if (value.length < 6) 
    callback(new Error('密码长度不得小于6位'))
  else 
    callback()
  
}

/**
 * 手机号码格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validateMobile(rule, value, callback) {
  const reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
  if (!reg.test(value)) 
    callback(new Error('手机号格式错误'))
  else 
    callback()
  
  callback()
}
export function validateBody(rule, value, callback) {
  const reg = /^\d+(\.\d{0,1})?$/.test(value)
  
  if (value && !reg) 
    return callback(new Error('请输入0-999.9范围数字'))
  if (Number(value) > 999) 
    callback(new Error('请输入0-999.9范围数字'))
  
  if (Number(value) < 0) 
    callback(new Error('请输入0-999.9范围数字'))
  
  callback()
}

/**
 * 固定电话号码格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validateTelephone(rule, value, callback) {
  const reg = /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/
  if (!reg.test(value)) 
    callback(new Error('固定电话号格式错误'))
  else 
    callback()
  
}

/**
 * 邮箱格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validateEmail(rule, value, callback) {
  const reg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
  if (!reg.test(value)) 
    callback(new Error('邮箱格式错误'))
  else 
    callback()
  
}

/**
 * 身份证号码格式验证
 * @param rule 验证规则（是否满足18位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export function validateIDCard(rule, value, callback) {
  const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  if (!reg.test(value)) 
    callback(new Error('身份证号码格式错误'))
  else 
    callback()
  
}

/**
 * 校验输入是否为英文
 * @param rule
 * @param value
 * @param callback
 */
export function validateEnglish(rule, value, callback) {
  const reg = new RegExp('^[a-zA-Z]+$')
  if (!reg.test(value)) 
    callback(new Error('请输入英文字符'))
  else 
    callback()
  
}
